Module:Party name with color
Appearance
This module is rated as beta, and is ready for widespread use. It is still new and should be used with some caution to ensure the results are as expected. |
This module depends on the following other modules: |
Usage
This module implements Template:Party name with color. See the documentation for Template:Party name with color for usage.
local p = {}
local fetch = nil -- lazy load
local function load_political_party_module()
if fetch == nil then
fetch = require('Module:Political party')._fetch
end
end
local function page_exist(page_name)
if not page_name then return false end
if mw.title.new(page_name).exists then return true end
return false
end
local function simplify_rowspan(text)
text = mw.ustring.gsub(text or '', 'rowspan="1"%s*', '')
return text
end
local function ifblank(one, two)
return (((one or "") ~= "") and one or two) or ""
end
local function getData(args)
local display_name = nil
local yesno = require('Module:Yesno')
if args[1] == "Independent" then
args[1] = "Independent politician"
end
if yesno(args.dab) == true then
display_name = args[1]
elseif yesno(args.full) == true then
display_name = mw.ustring.gsub(args[1], '%s+%b()$', '')
elseif args.shortname then
display_name = args.shortname
else
load_political_party_module()
if yesno(args.abbrev) then
display_name = fetch({args[1], 'abbrev'})
else
display_name = fetch({args[1], 'shortname'})
end
end
if yesno(args.bold) == true then display_name = "'''" .. display_name .. "'''" end
local text = nil
if yesno(args.no_link) == true then
text = display_name
else
-- TODO: should this be on by default or do we want red links?
if page_exist(args[1]) then
text = string.format("[[%s|%s]]", args[1], display_name)
else
text = display_name
end
end
local color = args.colour or args.color
if not color then
load_political_party_module()
color = fetch({args[1], 'color'})
end
return text, color
end
function p._cell(args)
if not args[1] then return '' end
local text, color = getData(args)
local line1 = 'rowspan="%s" style="width: 2px; color:inherit; background-color: %s;" data-sort-value="%s" |\n'
local line2 = '| scope="row" rowspan="%s" style="text-align: left;" | %s'
local rowspan = tonumber(args.rowspan) or 1
line1 = string.format(line1, rowspan, color, args[1])
line2 = string.format(line2, rowspan, text)
return simplify_rowspan(line1 .. line2)
end
function p._box(args)
if not args[1] then return '' end
local text, color = getData(args)
local seats
if args.seats then seats = ' (' .. args.seats .. ')' end
seats = seats or ''
local outline = args.outline or 'black'
local legend = '<span class="legend nowrap" style="page-break-inside:avoid;break-inside:avoid-column"><span class="legend-color" style="display:inline-block;min-width:1.25em;height:1.25em;line-height:1.25;margin:1px 0;border:1px solid ' .. outline .. ';background-color:' .. color .. '"> </span> ' .. text .. seats .. '</span>'
return legend
end
function p.cell(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
local check = require('Module:Check for unknown parameters')._check
local tracking = check({
['unknown']='[[Category:Pages using Party name with color with unknown parameters|_VALUE_ ]]',
['preview']='Page using [[Template:Party name with color]] with unknown parameter "_VALUE_"',
['showblankpositional']='1',
'1', 'abbrev', 'color', 'colour', 'dab', 'full', 'no_link', 'rowspan', 'shortname', 'bold'
}, frame:getParent().args)
return p._cell(args) .. tracking
end
function p.box(frame)
local getArgs = require('Module:Arguments').getArgs
local args = getArgs(frame)
return p._box(args)
end
return p